Путь от структуры к абстрактному типу данных (АТД) отмечает переход от «стеклянного ящика», где каждый внутренний провод виден, к «черному ящику», где интерфейс разделён от реализации. Этот сдвиг гарантирует инкапсуляцию: пользователи взаимодействуют с функциями, такими как читать или объединять не зная, как рассчитывается или хранится доход.
1. Архитектура классов
Каждый класс определяет уникальную идентичность типа. Даже если два класса имеют одинаковые члены, C++ считает их несовместимыми. Используя typedef и впереди объявления (например, class Screen;) позволяет нам проектировать сложные отношения, сохраняя абстракцию. Мы часто используем синтезированные версии конструкторов, например Sales_data() = default;, чтобы сохранить удобство встроенных типов ($$total = trans;$$).
2. Функции интерфейса вне класса
Функции, такие как читать являются Функциями, связанными с классом, но не входящими в него. Они являются частью интерфейса, но не самого класса, часто требуя дружбы для доступа к частным данным.